home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Modules / BackSpaceModules / Source / WallPaperView / WallPaperWrap.psw < prev   
Text File  |  1993-07-12  |  7KB  |  230 lines

  1. defineps wallpaper(float wild, boxsize, brightness)
  2.     brightness boxsize wild wallpaper
  3. endps
  4.  
  5. defineps loadwallpaper()
  6.  
  7. /wallpaper { % brightness boxsize wild
  8.  
  9.     /wild exch def
  10.     /boxsize exch def
  11.     /brightness exch def
  12.  
  13. % Gradient wrapping paper, symmetry group P4M
  14. % Elizabeth D. Zwicky
  15. % zwicky@erg.sri.com
  16.  
  17.     usertime srand
  18.     /seed rand def
  19.  
  20. % If you are using a wildness of .5 or less, you may find it 
  21. % interesting to specify a hue explicitly instead of letting it pick one
  22. % for you. (At a wildness of 1, it may still be interesting, but your
  23. % desired hue may not be dominant in the result.) Hue is a standard
  24. % PostScript hue, a number between 1 and 0 where 0 is true red,
  25. % .333333 is true green, .66666 is true blue.
  26.  
  27.     /hue rand 999 mod 1000 div def    
  28.  
  29. % There are 30 hue changes per page, so .033 gives you approximately
  30. % one rainbow, and .01 gets you approximately the difference from one
  31. % primary to the next.
  32. % When wild is 1, how fast should the hue migrate? 
  33.  
  34.     /wildmig .033 def
  35.  
  36. % When wild is less than 1, how fast should the hue migrate?
  37.  
  38.     /mig 0 def
  39.  
  40.     /firsthue hue def
  41.     /ohue rand 2 mod 0 eq
  42.      { hue .5 add dup 1 gt {1 sub} if }
  43.     { hue .2 add dup 1 gt {1 sub} if }
  44.      ifelse
  45.     def
  46.  
  47.     /sat 1 def
  48.     /bright 1 def
  49.     /obright 1 def
  50.  
  51.     wild -1 eq 
  52.     {/colorfill { 0 setgray stroke } def
  53.      /ocolorfill { 0 setgray stroke } def}
  54.     {/colorfill {hue sat bright brightness mul sethsbcolor fill } def
  55.      /ocolorfill {ohue sat obright brightness mul sethsbcolor fill } def}
  56.     ifelse
  57.  
  58.     clippath pathbbox /ury exch def /urx exch def /lly exch def /llx exch def
  59.  
  60. % You might want to replace "1 1" with "rand 99 mod 100 div rand 99
  61. % mod 100 div" when running at a wildness of negative 1. For that
  62. % matter, for that pastel, money-like effect, try "rand 50 mod 100
  63. % div 100 rand 25 mod sub 100 div"
  64.  
  65.     hue 1 1 brightness mul sethsbcolor fill
  66.  
  67.     /limit boxsize 2 div cvi def
  68.     /x {rand limit mod dup /curx exch def } def
  69.     /y {rand limit curx sub mod curx add } def
  70.     /any {rand limit mod} def
  71.  
  72.     llx lly translate
  73.  
  74.     /xtimes urx llx sub boxsize div 1.5 add cvi def
  75.     /ytimes ury lly sub boxsize div 1.5 add cvi def
  76.  
  77.     /anyone any def /anytwo any def
  78.     /xone x def /xtwo x def /xthree x def /xfour x def /xfive x def /xsix
  79.     x def /xseven x def /xeight x def
  80.     /yone y def /ytwo y def /ythree y def /yfour y def
  81.  
  82.     % /xtimes 2 def /ytimes 2 def
  83.  
  84.     xtimes {
  85.         ytimes {
  86.             /scaleby 1 def /bright 1 def /obright 0 def 
  87.             /ohue firsthue def
  88.             10 {
  89.                 wild 1 eq {/obright 1 def} if
  90.                 limit limit translate
  91.                 limit xone sub scaleby mul neg 0 moveto
  92.                 limit xtwo sub scaleby mul neg dup lineto
  93.                 0 limit xone sub scaleby mul neg lineto
  94.                 limit xtwo sub scaleby mul dup neg lineto
  95.                 limit xone sub scaleby mul 0 lineto
  96.                 limit xtwo sub scaleby mul dup lineto
  97.                 0 limit xone sub scaleby mul lineto
  98.                 limit xtwo sub scaleby mul neg dup neg lineto
  99.                 limit xone sub scaleby mul neg 0 lineto
  100.                 ocolorfill
  101.  
  102.                 limit neg limit neg translate
  103.                 /scaleby scaleby .1 sub def
  104.  
  105.                 wild 1 eq 
  106.                  {/ohue ohue wildmig add dup 1 gt {1 sub} if def}
  107.                 {/obright obright .1 add def /ohue ohue mig add dup 1 gt {1 sub} if def} 
  108.                 ifelse
  109.                 } repeat
  110.             /scaleby 1 def /obright 0 def
  111.             wild .5 eq {/ohue ohue .15 add dup 1 gt {1 sub} if def} if
  112.             10 {
  113.                 wild 1 eq {/obright 1 def} if
  114.  
  115.                 0 limit translate
  116.                 0 0 moveto
  117.                  0 limit anyone sub scaleby mul neg moveto xone scaleby mul 0 lineto
  118.                 0 limit anyone sub scaleby mul lineto
  119.                  xone scaleby mul neg 0 lineto
  120.                 0 limit anyone sub scaleby mul neg lineto
  121.  
  122.                 0 limit scaleby mul neg moveto 
  123.                 xthree scaleby mul limit yone sub scaleby mul neg
  124.                 xfour scaleby mul limit ytwo sub scaleby mul neg
  125.                 xfive scaleby mul 0 curveto
  126.                 xfour scaleby mul limit ytwo sub scaleby mul
  127.                 xthree scaleby mul limit yone sub scaleby mul
  128.                 0 limit scaleby mul curveto
  129.                 xthree scaleby mul neg limit yone sub scaleby mul
  130.                 xfour scaleby mul neg limit ytwo sub scaleby mul
  131.                 xfive scaleby mul neg 0 curveto
  132.                 xfour scaleby mul neg limit ytwo sub scaleby mul neg
  133.                 xthree scaleby mul neg limit yone sub scaleby mul neg
  134.                 0 limit scaleby mul neg curveto
  135.                 ocolorfill
  136.  
  137.                 limit limit neg translate
  138.                 0 0 moveto
  139.                 limit anyone sub scaleby mul neg 0 moveto 
  140.                 0 xone scaleby mul lineto
  141.                 limit anyone sub scaleby mul 0 lineto
  142.                 0 xone scaleby mul neg lineto
  143.                  limit anyone sub scaleby mul neg 0 lineto
  144.  
  145.                 limit scaleby mul neg 0 moveto 
  146.                 limit yone sub scaleby mul neg xthree scaleby mul 
  147.                  limit ytwo sub scaleby mul neg xfour scaleby mul 
  148.                 0 xfive scaleby mul curveto
  149.                 limit ytwo sub scaleby mul xfour scaleby mul 
  150.                 limit yone sub scaleby mul xthree scaleby mul 
  151.                 limit scaleby mul 0 curveto
  152.                 limit yone sub scaleby mul xthree scaleby mul neg
  153.                 limit ytwo sub scaleby mul xfour scaleby mul neg
  154.                 0 xfive scaleby mul neg curveto
  155.                 limit ytwo sub scaleby mul neg xfour scaleby mul neg 
  156.                 limit yone sub scaleby mul neg xthree scaleby mul neg 
  157.                 limit scaleby mul neg 0 curveto
  158.                 ocolorfill
  159.                 limit neg 0 translate
  160.                  /scaleby scaleby .1 sub def
  161.                 wild 1 eq {/ohue ohue wildmig add dup 1 gt {1 sub} if def} 
  162.                 {/obright obright .1 add def /ohue ohue mig add dup 1 gt {1 sub} if def}
  163.                 ifelse
  164.                 } repeat
  165.             /scaleby 1 def /obright 0 def
  166.             wild .5 eq {/hue ohue .15 add dup 1 gt {1 sub} if def} if
  167.             /scaleby 1 def
  168.             10 {
  169.                 wild 1 eq {/bright 1 def /hue ohue def} if
  170.                 scaleby scaleby scale
  171.  
  172.                 0 anyone moveto 
  173.                  xone limit lineto 
  174.                  xtwo xtwo lineto
  175.                 limit xone lineto
  176.                 anyone 0 lineto
  177.                 limit xone neg lineto
  178.                 xtwo xtwo neg lineto
  179.                 xone limit neg lineto
  180.                 0 anyone neg lineto
  181.                 xone neg limit neg lineto
  182.                 xtwo neg xtwo neg lineto
  183.                 limit neg xone neg lineto
  184.                 anyone neg 0 lineto
  185.                 limit neg xone lineto
  186.                 xtwo neg xtwo lineto
  187.                 xone neg limit lineto
  188.                 0 anyone lineto
  189.  
  190.                 0 0 moveto
  191.                 yone xthree ytwo xfour limit xfive curveto
  192.                 ythree xsix yfour xseven xeight xeight curveto
  193.                 xseven yfour xsix ythree xfive limit curveto
  194.                  xfour ytwo xthree yone 0 0 curveto
  195.  
  196.                  xthree yone neg xfour ytwo neg xfive limit neg curveto
  197.                 xsix ythree neg xseven yfour neg xeight xeight neg curveto
  198.                 yfour xseven neg ythree xsix neg limit xfive neg curveto
  199.                 ytwo xfour neg yone xthree neg 0 0 curveto
  200.  
  201.                 yone neg xthree neg ytwo neg xfour neg limit neg xfive neg curveto
  202.                 ythree neg xsix neg yfour neg xseven neg xeight neg xeight neg curveto
  203.                 xseven neg yfour neg xsix neg ythree neg xfive neg limit neg curveto
  204.                 xfour neg ytwo neg xthree neg yone neg 0 0 curveto
  205.  
  206.                 xthree neg yone xfour neg ytwo xfive neg limit curveto
  207.                 xsix neg ythree xseven neg yfour xeight neg xeight curveto
  208.                 yfour neg xseven ythree neg xsix limit neg xfive curveto
  209.                 ytwo neg xfour yone neg xthree 0 0 curveto
  210.  
  211.  % This is what things with normal limits use
  212.                  colorfill
  213.                 0 0 moveto
  214.                 1 scaleby div dup scale
  215.  
  216.                 /scaleby scaleby .1 sub def
  217.                 wild 1 eq 
  218.                 {/ohue ohue wildmig add dup 1 gt {1 sub } if def} 
  219.                 {/bright bright .1 sub def /ohue ohue mig add dup 1 gt {1 sub} if def}
  220.                  ifelse
  221.  
  222.                 } repeat
  223.             0 0 moveto 
  224.             0 boxsize translate
  225.             } repeat
  226.         boxsize boxsize ytimes mul neg translate
  227.         } repeat
  228. } def
  229. endps
  230.